package com.wn.config;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;
import java.nio.channels.NotYetBoundException;

/**
 * 在SpringConfig核心配置类中，加载MyBatisConfig配置。
 * MyBatisConfig配置：
 * 1、创建SqlSessionFactoryBean对象，spring整合mybatis; 需要注入连接池
 * 2、映射扫描配置，指定扫描的mapper包
 *    2.1 自动扫描指定包下的所有接口；对接口生产代理；执行接口中mybatis注解（@Select、@Insert..）
 *    2.2 自动加载该目录下的映射文件
 *    2.3 注意：mybatis开发，一旦接口使用了注解，就不用再对该接口方法进行xml配置了
 */
public class MyBatisConfig {

    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        return factoryBean;
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer scannerConfigurer =
                new MapperScannerConfigurer();
        scannerConfigurer.setBasePackage("com.wn.mapper");
        return scannerConfigurer;
    }


}
















